<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
 <meta>
  <!-- Stylesheets -->
  <link href="../web.css" type="text/css" rel="stylesheet"></link>
  <link href="../pygmentize.css" type="text/css" rel="stylesheet"></link>
  <title>VLFeat - Documentation - C API</title>
  <link rel="stylesheet" type="text/css" href="../doxygen.css"></style>

  <!-- Scripts-->
  
 </meta>

 <!-- Body Start -->
 <body>
  <div id="header">
   <!-- Google CSE Search Box Begins -->
   <form action="http://www.vlfeat.org/search.html" method="get" id="cse-search-box" enctype="application/x-www-form-urlencoded">
    <div>
     <input type="hidden" name="cx" value="003215582122030917471:oq23albfeam"></input>
     <input type="hidden" name="cof" value="FORID:11"></input>
     <input type="hidden" name="ie" value="UTF-8"></input>
     <input type="text" name="q" size="31"></input>
     <input type="submit" name="sa" value="Search"></input>
    </div>
   </form>
   <script src="http://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en" xml:space="preserve" type="text/javascript"></script>
   <!-- Google CSE Search Box Ends -->
   <h1><a shape="rect" href="../index.html" class="plain"><span id="vlfeat">VLFeat</span><span id="dotorg">.org</span></a></h1>
  </div>
  <div id="headbanner">
   Documentation - C API
  </div>
  <div id="pagebody">
   <div id="sidebar"> <!-- Navigation Start -->
    <ul>
<li><a href="../index.html">Home</a>
</li>
<li><a href="../download.html">Download</a>
</li>
<li><a href="../doc.html">Documentation</a>
<ul>
<li><a href="../mdoc/mdoc.html">Matlab API</a>
</li>
<li><a href="index.html" class='active' >C API</a>
</li>
<li><a href="../man/man.html">Man pages</a>
</li>
</ul></li>
<li><a href="../overview/tut.html">Tutorials</a>
</li>
<li><a href="../applications/apps.html">Applications</a>
</li>
</ul>

   </div> <!-- sidebar -->
   <div id="content">
    
    <link rel="stylesheet" type="text/css" href="../doxygen.css"></style>
    <div class="doxygen">
<div>
<!-- Generated by Doxygen 1.7.5.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Defines</a> &#124;
<a href="#typedef-members">Typedefs</a>  </div>
  <div class="headertitle">
<div class="title">mser.h File Reference</div>  </div>
</div>
<div class="contents">

<p>MSER (<a class="el" href="mser.html">Maximally Stable Extremal Regions</a>)  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="generic_8h.html">generic.h</a>&quot;</code><br/>
</div><table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__VlMserStats.html">VlMserStats</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">MSER filter statistics definition.  <a href="struct__VlMserStats.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__VlMserReg.html">VlMserReg</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">MSER: basic region (declaration)  <a href="struct__VlMserReg.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__VlMserExtrReg.html">VlMserExtrReg</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">MSER: extremal region (declaration)  <a href="struct__VlMserExtrReg.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__VlMserFilt.html">VlMserFilt</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">MSER filter.  <a href="struct__VlMserFilt.html#details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#ab88df95be093992e6c90caf07711182a">VL_MSER_PIX_MAXVAL</a>&#160;&#160;&#160;256</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum value.  <a href="#ab88df95be093992e6c90caf07711182a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a8dedc365f221c110cee8b0634ab86241">VL_MSER_VOID_NODE</a>&#160;&#160;&#160;((1ui64&lt;&lt;32) - 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Basic region flag: null region.  <a href="#a8dedc365f221c110cee8b0634ab86241"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="host_8h.html#a38fbd9a3cf53dfc9a5650c38497b7d35">vl_uint8</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a5f6872cfbb7787c2a38cc2d5f138c716">vl_mser_pix</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">MSER image data type.  <a href="#a5f6872cfbb7787c2a38cc2d5f138c716"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a4da3be7334e5383e02c829c53ddb9e34">vl_mser_acc</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">MSER accumulator data type.  <a href="#a4da3be7334e5383e02c829c53ddb9e34"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Construction and Destruction</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">VlMserFilt *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#af6dbdcb894693e90c43d51140d17cb9c">vl_mser_new</a> (int ndims, int const *dims)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new MSER filter.  <a href="#af6dbdcb894693e90c43d51140d17cb9c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a3d94ff216cb9389b49dc5799e26ad3ba">vl_mser_delete</a> (VlMserFilt *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete MSER filter.  <a href="#a3d94ff216cb9389b49dc5799e26ad3ba"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Processing</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#ae50c576bc27a1ee7837cbbe6e5089583">vl_mser_process</a> (VlMserFilt *f, <a class="el" href="mser_8h.html#a5f6872cfbb7787c2a38cc2d5f138c716">vl_mser_pix</a> const *im)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Process image.  <a href="#ae50c576bc27a1ee7837cbbe6e5089583"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#aeeee08edd486e41126316f1d3bf90013">vl_mser_ell_fit</a> (VlMserFilt *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Fit ellipsoids.  <a href="#aeeee08edd486e41126316f1d3bf90013"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Retrieving data</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="host_8h.html#a5bd6e91d6bfd0be04101fdca94069c92">vl_uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#abb4d8f51eeecdda9be01fc99b8144c52">vl_mser_get_regions_num</a> (VlMserFilt const *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get number of maximally stable extremal regions.  <a href="#abb4d8f51eeecdda9be01fc99b8144c52"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="host_8h.html#a5bd6e91d6bfd0be04101fdca94069c92">vl_uint</a> const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#ac13e050b5ea00ae60d34f00ff2400126">vl_mser_get_regions</a> (VlMserFilt const *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get maximally stable extremal regions.  <a href="#ac13e050b5ea00ae60d34f00ff2400126"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">float const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a9ce0f94d6cc33244be2f5ca736a0bff4">vl_mser_get_ell</a> (VlMserFilt const *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get ellipsoids.  <a href="#a9ce0f94d6cc33244be2f5ca736a0bff4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="host_8h.html#a5bd6e91d6bfd0be04101fdca94069c92">vl_uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a7f7172365b355735c1ee1cc4bded9915">vl_mser_get_ell_num</a> (VlMserFilt const *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get number of ellipsoids.  <a href="#a7f7172365b355735c1ee1cc4bded9915"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="host_8h.html#a5bd6e91d6bfd0be04101fdca94069c92">vl_uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a0e10d949e672ffd82dd230a7f0ab37a8">vl_mser_get_ell_dof</a> (VlMserFilt const *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get number of degrees of freedom of ellipsoids.  <a href="#a0e10d949e672ffd82dd230a7f0ab37a8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">VlMserStats const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#af8d2c9381ee97127e5da27be9ad7cc38">vl_mser_get_stats</a> (VlMserFilt const *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get statistics.  <a href="#af8d2c9381ee97127e5da27be9ad7cc38"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Retrieving parameters</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="mser_8h.html#a5f6872cfbb7787c2a38cc2d5f138c716">vl_mser_pix</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#abcd71f7677c7daf6902c022c825637de">vl_mser_get_delta</a> (VlMserFilt const *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get delta.  <a href="#abcd71f7677c7daf6902c022c825637de"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a82b28392b17bfd5bd6765e1cab61f049">vl_mser_get_min_area</a> (VlMserFilt const *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get minimum region area.  <a href="#a82b28392b17bfd5bd6765e1cab61f049"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a9598f59824914b8cd39ff384cdf2d708">vl_mser_get_max_area</a> (VlMserFilt const *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get maximum region area.  <a href="#a9598f59824914b8cd39ff384cdf2d708"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a546850260c72fa3ef1d5b5887a1240ad">vl_mser_get_max_variation</a> (VlMserFilt const *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get maximum region variation.  <a href="#a546850260c72fa3ef1d5b5887a1240ad"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a420d10de58b8e7878c6e4708f223493f">vl_mser_get_min_diversity</a> (VlMserFilt const *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get minimum diversity.  <a href="#a420d10de58b8e7878c6e4708f223493f"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Setting parameters</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a9aa9f3041186a969cb35268d4ab656bb">vl_mser_set_delta</a> (VlMserFilt *f, <a class="el" href="mser_8h.html#a5f6872cfbb7787c2a38cc2d5f138c716">vl_mser_pix</a> x)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set delta.  <a href="#a9aa9f3041186a969cb35268d4ab656bb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a25744f49395d441a8769b9f605480f4c">vl_mser_set_min_area</a> (VlMserFilt *f, double x)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set minimum region area.  <a href="#a25744f49395d441a8769b9f605480f4c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#af517861a633fbd7cc5637ea4baef0db6">vl_mser_set_max_area</a> (VlMserFilt *f, double x)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set maximum region area.  <a href="#af517861a633fbd7cc5637ea4baef0db6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#a7feb4b477fe6340639d40461174cfabe">vl_mser_set_max_variation</a> (VlMserFilt *f, double x)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set maximum region variation.  <a href="#a7feb4b477fe6340639d40461174cfabe"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mser_8h.html#abb7fe6fc94bb7503bdc0dd160a549de1">vl_mser_set_min_diversity</a> (VlMserFilt *f, double x)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set minimum diversity.  <a href="#abb7fe6fc94bb7503bdc0dd160a549de1"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>implements the <em>Maximally Stable Extremal Regions</em> (MSER) feature detetctor <a class="el" href="citelist.html#CITEREF_matas03robust">[7]</a> .</p>
<ul>
<li><a class="el" href="mser_8h.html#mser-overview">Maximally Stable Extremal Regions Overview</a></li>
<li><a class="el" href="mser_8h.html#mser-definition">MSER definition</a></li>
<li><a class="el" href="mser_8h.html#mser-vol">Volumetric images</a></li>
<li><a class="el" href="mser_8h.html#mser-ell">Ellipsoids</a></li>
</ul>
<h2><a class="anchor" id="mser-overview"></a>
Maximally Stable Extremal Regions Overview</h2>
<p>Running the MSER filter usually involves the following steps:</p>
<ul>
<li>Initialize the MSER filter by <a class="el" href="mser_8c.html#af6dbdcb894693e90c43d51140d17cb9c" title="Create a new MSER filter.">vl_mser_new()</a>. The filter can be reused for images of the same size.</li>
<li>Compute the MSERs by <a class="el" href="mser_8c.html#ae50c576bc27a1ee7837cbbe6e5089583" title="Process image.">vl_mser_process()</a>.</li>
<li>Optionally fit ellipsoids to the MSERs by <a class="el" href="mser_8c.html#aeeee08edd486e41126316f1d3bf90013" title="Fit ellipsoids.">vl_mser_ell_fit()</a>.</li>
<li>Retrieve the results by <a class="el" href="mser_8h.html#ac13e050b5ea00ae60d34f00ff2400126" title="Get maximally stable extremal regions.">vl_mser_get_regions()</a> (and optionally <a class="el" href="mser_8h.html#a9ce0f94d6cc33244be2f5ca736a0bff4" title="Get ellipsoids.">vl_mser_get_ell()</a>).</li>
<li>Optionally retrieve filter statistics by <a class="el" href="mser_8h.html#af8d2c9381ee97127e5da27be9ad7cc38" title="Get statistics.">vl_mser_get_stats()</a>.</li>
<li>Delete the MSER filter by <a class="el" href="mser_8c.html#a3d94ff216cb9389b49dc5799e26ad3ba" title="Delete MSER filter.">vl_mser_delete()</a>.</li>
</ul>
<h2><a class="anchor" id="mser-definition"></a>
MSER definition</h2>
<p>An extremal region <img class="formulaInl" alt="$R_l$" src="form_225.png"/> of an image is a connected component of the level set <img class="formulaInl" alt="$S_l = \{ x : I(x) \leq l \}$" src="form_226.png"/>.</p>
<div class="image">
<img src="mser-er.png" alt="mser-er.png"/>
</div>
<p>For each intensity <img class="formulaInl" alt="$l$" src="form_227.png"/>, one has multiple disjoint extremal regions in the level set <img class="formulaInl" alt="$S_l$" src="form_228.png"/>. Let <img class="formulaInl" alt="$l$" src="form_227.png"/> span a finite number of values <img class="formulaInl" alt="$\mathcal{L}=\{0,\dots,M-1\}$" src="form_229.png"/> (a sampling of the image range). One obtains a family of regions <img class="formulaInl" alt="$R_l$" src="form_225.png"/>; by connecting two regions <img class="formulaInl" alt="$R_l$" src="form_225.png"/>and <img class="formulaInl" alt="$R_{l+1}$" src="form_230.png"/> if, and only if, <img class="formulaInl" alt="$R_l\subset R_{l+1}$" src="form_231.png"/>, regions form a tree:</p>
<div class="image">
<img src="mser-tree.png" alt="mser-tree.png"/>
</div>
<p>The <em>maximally stable extremal regions</em> are extremal regions which satisfy a stability criterion. Here we use a criterion which is similar but not identical to the original paper. This definition is somewhat simpler both to understand and code (it also runs faster).</p>
<p>Let <img class="formulaInl" alt="$B(R_l)=(R_l,R_{l+1},\dots,R_{l+\Delta})$" src="form_232.png"/> be the branch of the tree rooted at <img class="formulaInl" alt="$R_l$" src="form_225.png"/>. We associate to the branch the (in)stability score</p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ v(R_l) = \frac{|R_{l+\Delta} - R_l|}{|R_l|}. \]" src="form_233.png"/>
</p>
<p>The score is low if the regions along the branch have similar area (and thus similar shape). We aim to select maximally stable branches; then a maximally stable region is just a representative region selected from a maximally stable branch (for simplicity we select <img class="formulaInl" alt="$R_l$" src="form_225.png"/>, but one could choose for example <img class="formulaInl" alt="$R_{l+\Delta/2}$" src="form_234.png"/>).</p>
<p>Roughly speaking, a branch is maximally stable if it is a local minimum of the (in)stability score. More accurately, we start by assuming that all branches are maximally stable. Then we consider each branch <img class="formulaInl" alt="$B(R_{l})$" src="form_235.png"/> and its parent branch <img class="formulaInl" alt="$B(R_{l+1}):R_{l+1}\supset R_l$" src="form_236.png"/> (notice that, due to the discrete nature of the calculations, they might be geometrically identical) and we mark as unstable the less stable one, i.e.:</p>
<ul>
<li>if <img class="formulaInl" alt="$v(R_l)<v(R_{l+1})$" src="form_237.png"/>, mark <img class="formulaInl" alt="$R_{l+1}$" src="form_230.png"/> as unstable;</li>
<li>if <img class="formulaInl" alt="$v(R_l)>v(R_{l+1})$" src="form_238.png"/>, mark <img class="formulaInl" alt="$R_{l}$" src="form_239.png"/> as unstable;</li>
<li>otherwise, do nothing.</li>
</ul>
<p>This criterion selects among nearby regions the ones that are more stable. We optionally refine the selection by running (starting from the bigger and going to the smaller regions) the following tests:</p>
<ul>
<li><img class="formulaInl" alt="$a_- \leq |R_{l}|/|R_{\infty}| \leq a_+$" src="form_240.png"/>: exclude MSERs too small or too big ( <img class="formulaInl" alt="$|R_{\infty}|$" src="form_241.png"/> is the area of the image).</li>
</ul>
<ul>
<li><img class="formulaInl" alt="$v(R_{l}) < v_+$" src="form_242.png"/>: exclude MSERs too unstable.</li>
</ul>
<ul>
<li>For any MSER <img class="formulaInl" alt="$R_l$" src="form_225.png"/>, find the parent MSER <img class="formulaInl" alt="$R_{l'}$" src="form_243.png"/> and check if <img class="formulaInl" alt="$|R_{l'} - R_l|/|R_l'| < d_+$" src="form_244.png"/>: remove duplicated MSERs.</li>
</ul>
<table class="doxtable">
<tr>
<td>parameter </td><td>alt. name </td><td>standard value </td><td>set by  </td></tr>
<tr>
<td><img class="formulaInl" alt="$\Delta$" src="form_245.png"/> </td><td><code>delta</code>  </td><td>5 </td><td><a class="el" href="mser_8h.html#a9aa9f3041186a969cb35268d4ab656bb" title="Set delta.">vl_mser_set_delta()</a>  </td></tr>
<tr>
<td><img class="formulaInl" alt="$a_+$" src="form_246.png"/> </td><td><code>max_area</code>  </td><td>0.75 </td><td><a class="el" href="mser_8h.html#af517861a633fbd7cc5637ea4baef0db6" title="Set maximum region area.">vl_mser_set_max_area()</a>  </td></tr>
<tr>
<td><img class="formulaInl" alt="$a_-$" src="form_247.png"/> </td><td><code>min_area</code>  </td><td>3.0/ <img class="formulaInl" alt="$|R_\infty|$" src="form_248.png"/> </td><td><a class="el" href="mser_8h.html#a25744f49395d441a8769b9f605480f4c" title="Set minimum region area.">vl_mser_set_min_area()</a>  </td></tr>
<tr>
<td><img class="formulaInl" alt="$v_+$" src="form_249.png"/> </td><td><code>max_var</code>  </td><td>0.25 </td><td><a class="el" href="mser_8h.html#a7feb4b477fe6340639d40461174cfabe" title="Set maximum region variation.">vl_mser_set_max_variation()</a>  </td></tr>
<tr>
<td><img class="formulaInl" alt="$d_+$" src="form_250.png"/> </td><td><code>min_diversity</code>  </td><td>0.2 </td><td><a class="el" href="mser_8h.html#abb7fe6fc94bb7503bdc0dd160a549de1" title="Set minimum diversity.">vl_mser_set_min_diversity()</a>  </td></tr>
</table>
<h2><a class="anchor" id="mser-vol"></a>
Volumetric images</h2>
<p>The code supports images of arbitrary dimension. For instance, it is possible to find the MSER regions of volumetric images or time sequences. See <a class="el" href="mser_8c.html#af6dbdcb894693e90c43d51140d17cb9c" title="Create a new MSER filter.">vl_mser_new()</a> for further details</p>
<h2><a class="anchor" id="mser-ell"></a>
Ellipsoids</h2>
<p>Usually extremal regions are returned as a set of ellipsoids fitted to the actual regions (which have arbitrary shape). The fit is done by calculating the mean and variance of the pixels composing the region: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ \mu_l = \frac{1}{|R_l|}\sum_{x\in R_l}x, \qquad \Sigma_l = \frac{1}{|R_l|}\sum_{x\in R_l} (x-\mu_l)^\top(x-\mu_l) \]" src="form_251.png"/>
</p>
<p> Ellipsoids are fitted by <a class="el" href="mser_8c.html#aeeee08edd486e41126316f1d3bf90013" title="Fit ellipsoids.">vl_mser_ell_fit()</a>. Notice that for a <em>n</em> dimensional image, the mean has <em>n</em> components and the variance has <em>n(n+1)/2</em> independent components. The total number of components is obtained by <a class="el" href="mser_8h.html#a0e10d949e672ffd82dd230a7f0ab37a8" title="Get number of degrees of freedom of ellipsoids.">vl_mser_get_ell_dof()</a> and the total number of fitted ellipsoids by <a class="el" href="mser_8h.html#a7f7172365b355735c1ee1cc4bded9915" title="Get number of ellipsoids.">vl_mser_get_ell_num()</a>. A matrix with an ellipsoid per column is returned by <a class="el" href="mser_8h.html#a9ce0f94d6cc33244be2f5ca736a0bff4" title="Get ellipsoids.">vl_mser_get_ell()</a>. The column is the stacking of the mean and of the independent components of the variance, in the order <em>(1,1),(1,2),..,(1,n), (2,2),(2,3)...</em>. In the calculations, the pixel coordinate <img class="formulaInl" alt="$x=(x_1,...,x_n)$" src="form_252.png"/> use the standard index order and ranges.</p>
<h3><a class="anchor" id="mser-algo"></a>
Algorithm</h3>
<p>The algorithm is quite efficient. While some details may be tricky, the overall idea is easy to grasp.</p>
<ul>
<li>Pixels are sorted by increasing intensity.</li>
<li>Pixels are added to a forest by increasing intensity. The forest has the following properties:<ul>
<li>All the descendent of a certain pixels are subset of an extremal region.</li>
<li>All the extremal regions are the descendants of some pixels.</li>
</ul>
</li>
<li>Extremal regions are extracted from the region tree and the extremal regions tree is calculated.</li>
<li>Stable regions are marked.</li>
<li>Duplicates and other bad regions are removed.</li>
</ul>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>The extremal region tree which is calculated is a subset of the actual extremal region tree. In particular, it does not contain redundant entries extremal regions that coincide as sets. So, for example, in the calculated extremal region tree, the parent <img class="formulaInl" alt="$R_q$" src="form_253.png"/> of an extremal region <img class="formulaInl" alt="$R_{l}$" src="form_239.png"/> may or may <em>not</em> correspond to <img class="formulaInl" alt="$R_{l+1}$" src="form_230.png"/>, depending whether <img class="formulaInl" alt="$q\leq l+1$" src="form_254.png"/> or not. These subtleties are important when calculating the stability tests.</dd></dl>
<dl class="author"><dt><b>Author:</b></dt><dd>Andrea Vedaldi </dd></dl>
</div><hr/><h2>Define Documentation</h2>
<a class="anchor" id="ab88df95be093992e6c90caf07711182a"></a><!-- doxytag: member="mser.h::VL_MSER_PIX_MAXVAL" ref="ab88df95be093992e6c90caf07711182a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_MSER_PIX_MAXVAL&#160;&#160;&#160;256</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Maximum value of the integer type <a class="el" href="mser_8h.html#a5f6872cfbb7787c2a38cc2d5f138c716" title="MSER image data type.">vl_mser_pix</a>. </p>

</div>
</div>
<a class="anchor" id="a8dedc365f221c110cee8b0634ab86241"></a><!-- doxytag: member="mser.h::VL_MSER_VOID_NODE" ref="a8dedc365f221c110cee8b0634ab86241" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_MSER_VOID_NODE&#160;&#160;&#160;((1ui64&lt;&lt;32) - 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="a4da3be7334e5383e02c829c53ddb9e34"></a><!-- doxytag: member="mser.h::vl_mser_acc" ref="a4da3be7334e5383e02c829c53ddb9e34" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef float <a class="el" href="mser_8h.html#a4da3be7334e5383e02c829c53ddb9e34">vl_mser_acc</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is a large integer type. It should be large enough to contain a number equal to the area (volume) of the image by the image width by the image height (for instance, if the image is a square of side 256, the maximum value is 256 x 256 x 256). </p>

</div>
</div>
<a class="anchor" id="a5f6872cfbb7787c2a38cc2d5f138c716"></a><!-- doxytag: member="mser.h::vl_mser_pix" ref="a5f6872cfbb7787c2a38cc2d5f138c716" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="host_8h.html#a38fbd9a3cf53dfc9a5650c38497b7d35">vl_uint8</a> <a class="el" href="mser_8h.html#a5f6872cfbb7787c2a38cc2d5f138c716">vl_mser_pix</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is the data type of the image pixels. It has to be an integer. </p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a3d94ff216cb9389b49dc5799e26ad3ba"></a><!-- doxytag: member="mser.h::vl_mser_delete" ref="a3d94ff216cb9389b49dc5799e26ad3ba" args="(VlMserFilt *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_mser_delete </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The function releases the MSER filter <em>f</em> and all its resources.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter to be deleted. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aeeee08edd486e41126316f1d3bf90013"></a><!-- doxytag: member="mser.h::vl_mser_ell_fit" ref="aeeee08edd486e41126316f1d3bf90013" args="(VlMserFilt *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_mser_ell_fit </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter.</td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="mser_8h.html#mser-ell">Ellipsoids</a> </dd></dl>

</div>
</div>
<a class="anchor" id="abcd71f7677c7daf6902c022c825637de"></a><!-- doxytag: member="mser.h::vl_mser_get_delta" ref="abcd71f7677c7daf6902c022c825637de" args="(VlMserFilt const *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="mser_8h.html#a5f6872cfbb7787c2a38cc2d5f138c716">vl_mser_pix</a> vl_mser_get_delta </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt const *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>value of <code>delta</code>. </dd></dl>

</div>
</div>
<a class="anchor" id="a9ce0f94d6cc33244be2f5ca736a0bff4"></a><!-- doxytag: member="mser.h::vl_mser_get_ell" ref="a9ce0f94d6cc33244be2f5ca736a0bff4" args="(VlMserFilt const *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float const * vl_mser_get_ell </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt const *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>ellipsoids. </dd></dl>

</div>
</div>
<a class="anchor" id="a0e10d949e672ffd82dd230a7f0ab37a8"></a><!-- doxytag: member="mser.h::vl_mser_get_ell_dof" ref="a0e10d949e672ffd82dd230a7f0ab37a8" args="(VlMserFilt const *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="host_8h.html#a5bd6e91d6bfd0be04101fdca94069c92">vl_uint</a> vl_mser_get_ell_dof </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt const *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of degrees of freedom. </dd></dl>

</div>
</div>
<a class="anchor" id="a7f7172365b355735c1ee1cc4bded9915"></a><!-- doxytag: member="mser.h::vl_mser_get_ell_num" ref="a7f7172365b355735c1ee1cc4bded9915" args="(VlMserFilt const *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="host_8h.html#a5bd6e91d6bfd0be04101fdca94069c92">vl_uint</a> vl_mser_get_ell_num </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt const *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of ellipsoids </dd></dl>

</div>
</div>
<a class="anchor" id="a9598f59824914b8cd39ff384cdf2d708"></a><!-- doxytag: member="mser.h::vl_mser_get_max_area" ref="a9598f59824914b8cd39ff384cdf2d708" args="(VlMserFilt const *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double vl_mser_get_max_area </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt const *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>maximum region area. </dd></dl>

</div>
</div>
<a class="anchor" id="a546850260c72fa3ef1d5b5887a1240ad"></a><!-- doxytag: member="mser.h::vl_mser_get_max_variation" ref="a546850260c72fa3ef1d5b5887a1240ad" args="(VlMserFilt const *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double vl_mser_get_max_variation </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt const *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>maximum region variation. </dd></dl>

</div>
</div>
<a class="anchor" id="a82b28392b17bfd5bd6765e1cab61f049"></a><!-- doxytag: member="mser.h::vl_mser_get_min_area" ref="a82b28392b17bfd5bd6765e1cab61f049" args="(VlMserFilt const *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double vl_mser_get_min_area </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt const *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>minimum region area. </dd></dl>

</div>
</div>
<a class="anchor" id="a420d10de58b8e7878c6e4708f223493f"></a><!-- doxytag: member="mser.h::vl_mser_get_min_diversity" ref="a420d10de58b8e7878c6e4708f223493f" args="(VlMserFilt const *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double vl_mser_get_min_diversity </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt const *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>value of <code>minimum</code> diversity. </dd></dl>

</div>
</div>
<a class="anchor" id="ac13e050b5ea00ae60d34f00ff2400126"></a><!-- doxytag: member="mser.h::vl_mser_get_regions" ref="ac13e050b5ea00ae60d34f00ff2400126" args="(VlMserFilt const *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="host_8h.html#a5bd6e91d6bfd0be04101fdca94069c92">vl_uint</a> const * vl_mser_get_regions </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt const *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>array of MSER pivots. </dd></dl>

</div>
</div>
<a class="anchor" id="abb4d8f51eeecdda9be01fc99b8144c52"></a><!-- doxytag: member="mser.h::vl_mser_get_regions_num" ref="abb4d8f51eeecdda9be01fc99b8144c52" args="(VlMserFilt const *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="host_8h.html#a5bd6e91d6bfd0be04101fdca94069c92">vl_uint</a> vl_mser_get_regions_num </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt const *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of MSERs. </dd></dl>

</div>
</div>
<a class="anchor" id="af8d2c9381ee97127e5da27be9ad7cc38"></a><!-- doxytag: member="mser.h::vl_mser_get_stats" ref="af8d2c9381ee97127e5da27be9ad7cc38" args="(VlMserFilt const *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">VlMserStats const * vl_mser_get_stats </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt const *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>statistics. </dd></dl>

</div>
</div>
<a class="anchor" id="af6dbdcb894693e90c43d51140d17cb9c"></a><!-- doxytag: member="mser.h::vl_mser_new" ref="af6dbdcb894693e90c43d51140d17cb9c" args="(int ndims, int const *dims)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">VlMserFilt* vl_mser_new </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>ndims</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int const *&#160;</td>
          <td class="paramname"><em>dims</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Initializes a new MSER filter for images of the specified dimensions. Images are <em>ndims</em> -dimensional arrays of dimensions <em>dims</em>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ndims</td><td>number of dimensions. </td></tr>
    <tr><td class="paramname">dims</td><td>dimensions. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ae50c576bc27a1ee7837cbbe6e5089583"></a><!-- doxytag: member="mser.h::vl_mser_process" ref="ae50c576bc27a1ee7837cbbe6e5089583" args="(VlMserFilt *f, vl_mser_pix const *im)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_mser_process </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt *&#160;</td>
          <td class="paramname"><em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="mser_8h.html#a5f6872cfbb7787c2a38cc2d5f138c716">vl_mser_pix</a> const *&#160;</td>
          <td class="paramname"><em>im</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The functions calculates the Maximally Stable Extremal Regions (MSERs) of image <em>im</em> using the MSER filter <em>f</em>.</p>
<p>The filter <em>f</em> must have been initialized to be compatible with the dimensions of <em>im</em>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
    <tr><td class="paramname">im</td><td>image data. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a9aa9f3041186a969cb35268d4ab656bb"></a><!-- doxytag: member="mser.h::vl_mser_set_delta" ref="a9aa9f3041186a969cb35268d4ab656bb" args="(VlMserFilt *f, vl_mser_pix x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_mser_set_delta </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt *&#160;</td>
          <td class="paramname"><em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="mser_8h.html#a5f6872cfbb7787c2a38cc2d5f138c716">vl_mser_pix</a>&#160;</td>
          <td class="paramname"><em>x</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
    <tr><td class="paramname">x</td><td>value of <code>delta</code>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af517861a633fbd7cc5637ea4baef0db6"></a><!-- doxytag: member="mser.h::vl_mser_set_max_area" ref="af517861a633fbd7cc5637ea4baef0db6" args="(VlMserFilt *f, double x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_mser_set_max_area </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt *&#160;</td>
          <td class="paramname"><em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
    <tr><td class="paramname">x</td><td>maximum region area. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a7feb4b477fe6340639d40461174cfabe"></a><!-- doxytag: member="mser.h::vl_mser_set_max_variation" ref="a7feb4b477fe6340639d40461174cfabe" args="(VlMserFilt *f, double x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_mser_set_max_variation </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt *&#160;</td>
          <td class="paramname"><em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
    <tr><td class="paramname">x</td><td>maximum region variation. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a25744f49395d441a8769b9f605480f4c"></a><!-- doxytag: member="mser.h::vl_mser_set_min_area" ref="a25744f49395d441a8769b9f605480f4c" args="(VlMserFilt *f, double x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_mser_set_min_area </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt *&#160;</td>
          <td class="paramname"><em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
    <tr><td class="paramname">x</td><td>minimum region area. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="abb7fe6fc94bb7503bdc0dd160a549de1"></a><!-- doxytag: member="mser.h::vl_mser_set_min_diversity" ref="abb7fe6fc94bb7503bdc0dd160a549de1" args="(VlMserFilt *f, double x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_mser_set_min_diversity </td>
          <td>(</td>
          <td class="paramtype">VlMserFilt *&#160;</td>
          <td class="paramname"><em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>MSER filter. </td></tr>
    <tr><td class="paramname">x</td><td>value of <code>minimum</code> diversity. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div>
     <!-- Doc Here -->
    </div>
   
   </div>
   <div class="clear">&nbsp;</div>
  </div> <!-- pagebody -->
  <div id="footer">
   &copy; 2007-12 Andrea Vedaldi and Brian Fulkerson
  </div> <!-- footer -->

  <!-- Google Analytics Begins -->
  <script xml:space="preserve" type="text/javascript">
   //<![CDATA[
    var localre = /vlfeat.org/;
    if(document.location.host.search(localre) != -1)
    {
   var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
   document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
   }
   //]]>
  </script>
  <script xml:space="preserve" type="text/javascript">
    //<![CDATA[
    var localre = /vlfeat.org/;
    if(document.location.host.search(localre) != -1)
    {

   try {
   var pageTracker = _gat._getTracker("UA-4936091-2");
   pageTracker._trackPageview();
   } catch(err) {}

   }
   //]]>
  </script>
  <!-- Google Analytics Ends -->
 </body>
</html>

 
